using UniversalAdmin.Domain.Entities;

namespace UniversalAdmin.Domain.Repositories;

public interface IDocumentRepository : IRepository<Document>
{
    Task<(IEnumerable<Document> Documents, int TotalCount)> GetPagedAsync(int page, int pageSize, string? keyword = null, DocumentStatus? status = null, Guid? userId = null);
    Task<IEnumerable<Document>> GetByUserIdAsync(Guid userId, int page, int pageSize);
    Task<IEnumerable<Document>> GetByStatusAsync(DocumentStatus status, int page, int pageSize);
    Task<bool> ExistsByFilePathAsync(string filePath);
    Task<IEnumerable<Document>> GetRelatedDocumentsAsync(Guid documentId, int topCount = 5);
}